# -*- coding: utf-8 -*-
"""
Created on Wed Feb  7 19:09:42 2018

高阶函数之map

Python内建了map()和reduce()函数。
map()函数接收两个参数，一个是函数，一个是Iterable，
map将传入的函数依次作用到序列的每个元素，并把结果作为新的Iterator返回

@author: Administrator
"""


'''
举例说明，比如我们有一个函数f(x)=x2，
要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]上，
就可以用map()实现
'''
def f(x):
    return x*x


l = list(range(1,10))
t = map(f,l)
m = list(t)
print(m)
print(type(t))


# 自己实现map
def imap(f, iterable):
    return (f(x) for x in iterable)

t=imap(f, list(range(10)))
n=list(t)
print(n)
print(type(t))


'''
利用map()函数，把用户输入的不规范的英文名字，变为首字母大写，其他小写的规范名字。
输入：['adam', 'LISA', 'barT']，
输出：['Adam', 'Lisa', 'Bart']：
'''
def normalize(name):
    return name[:1].upper()+name[1:].lower()


# 测试:
L1 = ['adam', 'LISA', 'barT']
L2 = list(map(normalize, L1))
print(L2)


    


